/* 
 * File:   main.cpp
 * Author: mauro
 *
 * Created on 25 de septiembre de 2014, 19:42
 */

#include <cstdlib>
#include <iostream>
#include <netdb.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/wait.h>
#include <signal.h>

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>

#include "Model/ClientSocket.h"
#include "Model/Button.h"
#include "Model/SBSImage.h"
#include "Model/Window.h"
#include "Model/MundoSBS.h"
#include "Define/DefaultValues.h"


using namespace std;

#define MAXDATASIZE 100 //Máximo número de bytes que se pueden leer de una vez


int main(int argc, char** argv) {
    SBSLog* myLogFile;
    myLogFile->getInstance(MY_LOG_MODE).setMyTimeStamp(); //graba el timestamp de la corrida 
    ClientSocket* client = new ClientSocket();
    MundoSBS mundo;
    if (mundo.initButton(client)) {
        myLogFile->writeInLog(0, "[0] Se inicializo correctamente la pantalla de conexion del cliente\n");

        //ENVIO EL PAQUETE OK.
        int num = 0;
        int len = sizeof (num);
        client->sendAll(&num, len);

        if (!mundo.startGame(client)) {
            // solo funciona si corroboras las conexiones iniciales
            mundo.waitingPlayers(client);
        }

        while (!mundo.end()) {
            
            mundo.setGameOver(false);
            
            if (mundo.initLevel(client)) {
                myLogFile->writeInLog(0, "[0] Se inicializo correctamente el juego del cliente\n");
            }
            if (!mundo.getGameOver()) {
                if (!mundo.end()) {
                    if (mundo.initLevel2(client)) {
                        myLogFile->writeInLog(0, "[0] Se inicializo correctamente el nivel 2 del cliente\n");
                    }
                }
            }
            if (mundo.waitingForReload) {
                mundo.waitingPlayersToReload();
                myLogFile->writeInLog(0, "[0] Se inicializo correctamente el nivel 2 del cliente\n");

            }
        }
    }
    delete client;
    return 0;
}
